import { UopPaymentTypeEnum } from '@/enums';
import { Transform } from 'class-transformer';
import { IsDefined, Min, ValidateIf } from 'class-validator';

export class UopOrderDto {
  @IsDefined({ message: '支付方式必填' })
  type: UopPaymentTypeEnum;

  @IsDefined({ message: '订单金额必填' })
  @Transform(({ value }) => Number(value))
  @Min(1, { message: '最小支付金额为1分' })
  totalAmount: number;

  expireTime?: string;

  notifyUrl?: string;

  returnUrl?: string;

  @ValidateIf((o) => o.type === UopPaymentTypeEnum.WECHAT)
  @IsDefined({
    message: `微信H5支付必填,用于苹app
应用里值为IOS_SDK ；用于
安卓app 应用里值为
AND_SDK；用于手机网站，
值为IOS_WAP 或AND_WAP`,
  })
  sceneType?: string;

  @ValidateIf((o) => o.type === UopPaymentTypeEnum.WECHAT)
  @IsDefined({
    message: `微信H5支付必填，用于苹或
安卓app 应用中，传分别
对应在 AppStore和安卓分
发市场中的应用名（如：全
民付）；用于手机网站，传
对应的网站名（如：银联商
务官网）`,
  })
  merAppName?: string;

  @ValidateIf((o) => o.type === UopPaymentTypeEnum.WECHAT)
  @IsDefined({
    message: `微信H5支付必填。
用于苹果或安卓 app 应用
中，苹果传 IOS 应用唯一
标识(如：
com.tencent.wzryIOS )
安卓传包名 (如：
com.tencent.tmgp.sgame)
如果是用于手机网站 ，传
首页 URL 地址 , (如：
https://m.jd.com ) ，支
付宝H5支付参数无效`,
  })
  merAppId?: string;

  orderDesc?: string;
  goods?: string;
}
